package innerclassdemo4;

/**
 * Created with IntelliJ IDEA.
 * Description:匿名内部类的使用
 * User: 阿宾
 * Date: 2024-10-16
 * Time: 14:45
 */
public class Test {

    public static void main(String[] args) {


        //相当于创建了一个对象，这个对象是实现接口Swim
        new Swim(){
            //需要重写接口中所有的抽象方法
            @Override
            public void swim() {
                System.out.println("重写了游泳的方法");
            }
        };

        new Animal(){
            //重写匿名内部类中所有抽象方法
            @Override
            public void eat() {
                System.out.println("重写了eat方法");
            }
        };

        //使用匿名内部类调用方法
        method(
                new Animal(){
                    //重写匿名内部类中所有抽象方法
                    @Override
                    public void eat() {
                        System.out.println("重写了eat方法");
                    }
                });

    }
    public static void method(Animal animal){
        //其中匿名内部类相当于对象，并且这个对象是继承了抽象类Animal，即
        //Aniaml a = 子类对象 ，也就是说会发生多态，
        //这样利用多态性质：编译看左边，运行看右边，所以会输出子类方法
        animal.eat();
    }
}
